package cn.good.yan.b5;


/**
 * b5. String 字符串
 *
 * @author shengren.yan
 * @create 2023-07-20
 */
public class Test {

    public static void main(String[] args) {
        Test test = new Test();
        test.t1();
    }

    /**
     * String 类的方法 （不可变的）
     */
    public void t1() {
        String str = "abc";
        // 是否为空
        boolean empty = str.isEmpty();
        // 字符串的长度
        int length = str.length();
        // 比较字符串内容是否相等
        boolean equals = str.equals("abc");
        // 比较字符串内容是否相等（忽略大小写）
        boolean equals2 = str.equalsIgnoreCase("abc");
        // 比较字符串大小 （如果是负数，代表后面的abc大）
        int abc = str.compareTo("abc");
        // 比较字符串大小 （忽略大小写）
        int abc2 = str.compareToIgnoreCase("abc");
        // 大写转小写
        String s1 = str.toLowerCase();
        // 小写转大写
        String s2 = str.toUpperCase();
        // 去除字符串前后空格
        String trim = str.trim();

        // 字符串是否包含
        boolean a = str.contains("a");
        // 返回该查找内容的下标，没有返回-1
        int a1 = str.indexOf("a");
        // 返回该查找内容的下标，没有返回-1 , 参数2：从某个位置下标后开始查找
        int a2 = str.indexOf("a", 3);
        // 从后面开始往前查找
        int a3 = str.lastIndexOf("a");
        // 从后面开始往前查找  参数2：从某个位置下标后开始查找
        int a4 = str.lastIndexOf("a", 3);

        // 截取某个字符串 ，从该位置下标（包含当前自己），向后取
        String substring = str.substring(1);
        // 截取某个字符串 ，从该位置下标（包含当前自己），向后取 ，参数2：取几个，取3个
        String substring2 = str.substring(1, 3);

        // 返回改下标的字符
        char c = str.charAt(2);
//        System.out.println(c); // c
        // 返回字符串
        String s = String.valueOf(new char[]{'b', 'w'});
        // 检查字符串是不是以这个为开头
        boolean ab1 = str.startsWith("abc");
        // 检查字符串是不是以这个为开头  参数2：从某个位置下标后开始查找
        boolean ab2 = str.startsWith("abc",3);
        // 检查字符串是不是以这个为结束
        boolean ab3 = str.endsWith("abc");
        // 替换 ，把a替换成c
        String replace = str.replace("a", "c");
        // 替换 ，参数1：可以是【正则表达式】
        String replace2 = str.replaceAll("a", "c");
        // 替换 ，参数1：可以是【正则表达式】，只替换匹配第一个字符串
        String replace3 = str.replaceFirst("a", "c");

    }


    /**
     * StringBuilder 非线程安全  StringBuffer 线程安全的 （可变的）
     */
    public void t2() {
        // StringBuilder 非线程安全  StringBuffer 线程安全
        StringBuilder s = new StringBuilder();
        // 追加
        s.append("a").append("b").append("c");
        // 在下标为3的位置上，增加h
        s.insert(2,"h");
        // 从1 - 6的位置，替换成hhh
        s.replace(1,3,"hhh");
        // 查询有没有这个字符 ，lastIndexOf
        s.indexOf("true");
        // 从1-6的位置，截取
        String s1 = s.substring(1,3);
        // 从1-3 删除掉
        s.delete(1,3);
        // 删除下标是3的字符
        s.deleteCharAt(3);
        // 长度
        int length = s.length();
        // 反转
        StringBuilder reverse = s.reverse();
    }

}
